/**
 * @file
 * @author  Tsin Smith <tsin.creator@gmail.com>
 *
 * @section DESCRIPTION
 *
 * Interface for top level entries.
 *
 */

#ifndef __TSIN_MAIN_HPP__
#define __TSIN_MAIN_HPP__

#include <tsin/common.hpp>

namespace tsin {

        class Argument;

        class Main
        {
        public:
                /**
                 * Entry for the whole program.
                 *
                 * @param arg Arg list
                 *        constructed from command line given arguments.
                 *
                 * @return Return value for the whole program.
                 */
                virtual int main(Argument &arg) = 0;
        };

}

#endif /* __TSIN_MAIN_HPP__ */
